# z_est <- estimator_missSBM$memberships
# estimate_Q_Var <- sapply(1:K, function(a) sapply(1:K, function(b) mean(A_obs[z_est == a, z_est == b], na.rm =T)))
# estimate_Q_Var[is.na(estimate_Q_Var)] <- 0
# estimate_Theta_Var <- sapply(1:N, function(i) sapply(1:N, function(j) estimate_Q_Var[z_est[i], z_est[j]]))
# diag(estimate_Theta_Var) <- 0
#
# Error_Var[m] <- sum((estimate_Theta_Var - Theta)**2, na.rm = F)/N**2
#
# ##################### -  Estimate network using the true z - #####################
# estimate_Q_true_Z <- sapply(1:K, function(a) sapply(1:K, function(b) mean(A_obs[Z == a, Z == b], na.rm =T)))
# estimate_Q_true_Z[is.na(estimate_Q_true_Z)] <- 0
# estimate_Theta_true_Z <- sapply(1:N, function(i) sapply(1:N, function(j) estimate_Q_true_Z[Z[i], Z[j]]))
# diag(estimate_Theta_true_Z) <- 0
#
# Error_true_Z[m] <- sum((estimate_Theta_true_Z - Theta)**2, na.rm = F)/N**2
# print(m)
}
results$Error_av <- Error_av
path <- paste0("Missing Observations", "/r_", r,"_av.RDS")
saveRDS(results, file = path)
print(path)
end_time <- Sys.time()
print(end_time - start_time)
}
rm(list=objects())
setwd("~/Desktop/Experiments/Simulations/Results")
library(softImpute)
library(missSBM)
##################### -  Set parameters - #########
K <- 3
M <- 100 # number of experiments############
N <- 500
p_list <- exp(seq(log(1), log(0.025), length.out = 15))
# set Q the probabilities of connections between communities
Q <- matrix(c(0.5,   0.2,  0.2,
0.2,   0.5,  0.2,
0.2,  0.2,  0.5), nrow = 3)
alpha <- rep(1/K, K)
##################### -  Experiments - #####################
for (r in 1:14){
p <- p_list[r]
set.seed(0)
start_time <- Sys.time()
# record the errors
# Error_missSBM <- rep(NA, M)
# Error_Var<- rep(0, M)
# Error_true_Z <- rep(NA, M)
# Error_softImpute <- rep(NA, M)
Error_av <- rep(NA, M)
results <- readRDS(paste0("Missing Observations", "/r_", r,".RDS"))
for (m in 1:M){
##################### -  Draw random variables - #####################
# set Z the label function
Z <- base::sample(1:K, size = N, replace = T, prob = alpha)
# set A the full adjacency matrix
Theta <- sapply(1:N, function(i) sapply(1:N, function(j) Q[Z[i], Z[j]])) # SBM matrix
diag(Theta)  <- 0
A_undir <- rbinom(n=N*(N-1)/2, size=1, prob=Theta[upper.tri(Theta)]) # draw edges
A <- matrix(0,N,N)
A[upper.tri(A)] <- A_undir
A <- (A+t(A)) # adjacency matrix
# Sample edges
Omega_undir <- rbinom(n=N*(N-1)/2, size=1, prob=p) # draw edges
Omega <- matrix(0,N,N)
Omega[upper.tri(Omega)] <- Omega_undir
Omega <- (Omega+t(Omega)) # adjacency matrix
# set A_obs the observed adjacency matrix
A_obs <- A
diag(A_obs) <- NA
A_obs[Omega == 0] <- NA
##################### -  Estimate network using the average degree - #####################
estimate_av <- matrix(mean(A_obs, na.rm =T), ncol = N, nrow = N)
diag(estimate_av) <- 0
Error_av[m] <- sum((Theta - estimate_av)**2, na.rm = F)/N**2
#
# ##################### -  Estimate network using softImpute - #####################
# SVD <- softImpute(A_obs, rank.max = K, lambda = 0, maxit = 500)
# estimate_Theta_softImpute <- SVD$u %*% diag(SVD$d, nrow = K, ncol = K) %*% t(SVD$v)
# estimate_Theta_softImpute <- pmin(pmax(estimate_Theta_softImpute, 0),1)
# Error_softImpute[m] <- sum((estimate_Theta_softImpute - Theta)**2, na.rm = F)/N**2
#
# ##################### -  Estimate network using missSBM - #####################
# estimator_missSBM <- missSBM::estimateMissSBM(
#   adjacencyMatrix = A_obs,
#   vBlocks = c(K),
#   sampling = "dyad",
#   control = list(trace = 0))$bestModel$fittedSBM
# estimate_Theta_missSBM <- estimator_missSBM$expectation
#
# Error_missSBM[m] <- sum((estimate_Theta_missSBM - Theta)**2, na.rm = F)/N**2
#
# ##################### -  Estimate network using the variational estimate of z - #####################
# z_est <- estimator_missSBM$memberships
# estimate_Q_Var <- sapply(1:K, function(a) sapply(1:K, function(b) mean(A_obs[z_est == a, z_est == b], na.rm =T)))
# estimate_Q_Var[is.na(estimate_Q_Var)] <- 0
# estimate_Theta_Var <- sapply(1:N, function(i) sapply(1:N, function(j) estimate_Q_Var[z_est[i], z_est[j]]))
# diag(estimate_Theta_Var) <- 0
#
# Error_Var[m] <- sum((estimate_Theta_Var - Theta)**2, na.rm = F)/N**2
#
# ##################### -  Estimate network using the true z - #####################
# estimate_Q_true_Z <- sapply(1:K, function(a) sapply(1:K, function(b) mean(A_obs[Z == a, Z == b], na.rm =T)))
# estimate_Q_true_Z[is.na(estimate_Q_true_Z)] <- 0
# estimate_Theta_true_Z <- sapply(1:N, function(i) sapply(1:N, function(j) estimate_Q_true_Z[Z[i], Z[j]]))
# diag(estimate_Theta_true_Z) <- 0
#
# Error_true_Z[m] <- sum((estimate_Theta_true_Z - Theta)**2, na.rm = F)/N**2
# print(m)
}
results$Error_av <- Error_av
path <- paste0("Missing Observations", "/r_", r,"_av.RDS")
saveRDS(results, file = path)
print(path)
end_time <- Sys.time()
print(end_time - start_time)
}
rm(list=objects())
setwd("~/Desktop/Experiments/Simulations/Results")
type <- 2
path <- "Missing Observations"
K <- 3
M <- 100 # number of experiments############a
N <- 500
p_list <- rep(0,15)
# record the errors
Error_missSBM <- matrix(NA, ncol = 3, nrow = 15)
Error_Var <- matrix(NA, ncol = 3, nrow = 15)
Error_true_Z <- matrix(NA, ncol = 3, nrow = 15)
Error_softImpute <- matrix(NA, ncol = 3, nrow = 15)
Error_av <- matrix(NA, ncol = 3, nrow = 15)
for (n in 1:14){
res <- readRDS(paste0(path, "/r_", n,"_av.RDS"))
p_list[n] <- res$p
Error_missSBM[n,] <- quantile(res$Error_missSBM, probs = c(0.25, 0.5, 0.75))
Error_Var[n,] <- quantile(res$Error_Var, probs = c(0.25, 0.5, 0.75))
Error_softImpute[n,] <- quantile(res$Error_softImpute, probs = c(0.25, 0.5, 0.75))
Error_true_Z[n,] <- quantile(res$Error_true_Z, probs = c(0.25, 0.5, 0.75))
Error_av[n,] <- quantile(res$Error_av, probs = c(0.25, 0.5, 0.75))
}
#Error_softImpute <- log(Error_softImpute)
#Error_true_Z <- log(Error_true_Z)
#Error_Var <- log(Error_Var)
#Error_missSBM <- log(Error_missSBM)
plot(x = p_list, y = Error_softImpute[,2], type = 'l', col = 'green',
xlab = "", ylab = "", log = "x", ylim = c(0, 0.1))
lines(x = p_list, y = Error_softImpute[,1], lty = 3, col = 'green')
lines(x = p_list, y = Error_softImpute[,3], lty = 3, col = 'green')
lines(x = p_list, y = Error_true_Z[,2], col = 'black')
lines(x = p_list, y = Error_true_Z[,1], lty = 3, col = 'black')
lines(x = p_list, y = Error_true_Z[,3], lty = 3, col = 'black')
lines(x = p_list, y = Error_Var[,2], col = 'blue')
lines(x = p_list, y = Error_Var[,1], lty = 3, col = 'blue')
lines(x = p_list, y = Error_Var[,3], lty = 3, col = 'blue')
lines(x = p_list, y = Error_missSBM[,2], col = 'red')
lines(x = p_list, y = Error_missSBM[,1], lty = 3, col = 'red')
lines(x = p_list, y = Error_missSBM[,3], lty = 3, col = 'red')
lines(x = p_list, y = Error_av[,2], col = 'orange')
lines(x = p_list, y = Error_av[,1], lty = 3, col = 'orange')
lines(x = p_list, y = Error_av[,3], lty = 3, col = 'orange')
plot(x = p_list, y = Error_softImpute[,2], type = 'l', col = 'green',
xlab = "", ylab = "", log = "x", ylim = c(0, 0.1))
Error_softImpute[,2]
rm(list=objects())
setwd("~/Desktop/Experiments/Simulations/Results")
type <- 2
path <- "Missing Observations"
K <- 3
M <- 100 # number of experiments############a
N <- 500
p_list <- rep(0,14)
# record the errors
Error_missSBM <- matrix(NA, ncol = 3, nrow = 14)
Error_Var <- matrix(NA, ncol = 3, nrow = 14)
Error_true_Z <- matrix(NA, ncol = 3, nrow = 14)
Error_softImpute <- matrix(NA, ncol = 3, nrow = 14)
Error_av <- matrix(NA, ncol = 3, nrow = 14)
for (n in 1:14){
res <- readRDS(paste0(path, "/r_", n,"_av.RDS"))
p_list[n] <- res$p
Error_missSBM[n,] <- quantile(res$Error_missSBM, probs = c(0.25, 0.5, 0.75))
Error_Var[n,] <- quantile(res$Error_Var, probs = c(0.25, 0.5, 0.75))
Error_softImpute[n,] <- quantile(res$Error_softImpute, probs = c(0.25, 0.5, 0.75))
Error_true_Z[n,] <- quantile(res$Error_true_Z, probs = c(0.25, 0.5, 0.75))
Error_av[n,] <- quantile(res$Error_av, probs = c(0.25, 0.5, 0.75))
}
#Error_softImpute <- log(Error_softImpute)
#Error_true_Z <- log(Error_true_Z)
#Error_Var <- log(Error_Var)
#Error_missSBM <- log(Error_missSBM)
plot(x = p_list, y = Error_softImpute[,2], type = 'l', col = 'green',
xlab = "", ylab = "", log = "x", ylim = c(0, 0.1))
lines(x = p_list, y = Error_softImpute[,1], lty = 3, col = 'green')
lines(x = p_list, y = Error_softImpute[,3], lty = 3, col = 'green')
lines(x = p_list, y = Error_true_Z[,2], col = 'black')
lines(x = p_list, y = Error_true_Z[,1], lty = 3, col = 'black')
lines(x = p_list, y = Error_true_Z[,3], lty = 3, col = 'black')
lines(x = p_list, y = Error_Var[,2], col = 'blue')
lines(x = p_list, y = Error_Var[,1], lty = 3, col = 'blue')
lines(x = p_list, y = Error_Var[,3], lty = 3, col = 'blue')
lines(x = p_list, y = Error_missSBM[,2], col = 'red')
lines(x = p_list, y = Error_missSBM[,1], lty = 3, col = 'red')
lines(x = p_list, y = Error_missSBM[,3], lty = 3, col = 'red')
lines(x = p_list, y = Error_av[,2], col = 'orange')
lines(x = p_list, y = Error_av[,1], lty = 3, col = 'orange')
lines(x = p_list, y = Error_av[,3], lty = 3, col = 'orange')
rm(list=objects())
setwd("~/Desktop/Experiments/Simulations/Results")
type <- 2
path <- "Missing Observations"
K <- 3
M <- 100 # number of experiments############a
N <- 500
p_list <- rep(0,14)
# record the errors
Error_missSBM <- matrix(NA, ncol = 3, nrow = 14)
Error_Var <- matrix(NA, ncol = 3, nrow = 14)
Error_true_Z <- matrix(NA, ncol = 3, nrow = 14)
Error_softImpute <- matrix(NA, ncol = 3, nrow = 14)
Error_av <- matrix(NA, ncol = 3, nrow = 14)
for (n in 1:14){
res <- readRDS(paste0(path, "/r_", n,"_av.RDS"))
p_list[n] <- res$p
Error_missSBM[n,] <- quantile(res$Error_missSBM, probs = c(0.25, 0.5, 0.75))
Error_Var[n,] <- quantile(res$Error_Var, probs = c(0.25, 0.5, 0.75))
Error_softImpute[n,] <- quantile(res$Error_softImpute, probs = c(0.25, 0.5, 0.75))
Error_true_Z[n,] <- quantile(res$Error_true_Z, probs = c(0.25, 0.5, 0.75))
Error_av[n,] <- quantile(res$Error_av, probs = c(0.25, 0.5, 0.75))
}
#Error_softImpute <- log(Error_softImpute)
#Error_true_Z <- log(Error_true_Z)
#Error_Var <- log(Error_Var)
#Error_missSBM <- log(Error_missSBM)
plot(x = p_list, y = Error_softImpute[,2], type = 'l', col = 'green',
xlab = "", ylab = "", log = "x", ylim = c(0, 0.1))
lines(x = p_list, y = Error_softImpute[,1], lty = 3, col = 'green')
lines(x = p_list, y = Error_softImpute[,3], lty = 3, col = 'green')
lines(x = p_list, y = Error_true_Z[,2], col = 'black')
lines(x = p_list, y = Error_true_Z[,1], lty = 3, col = 'black')
lines(x = p_list, y = Error_true_Z[,3], lty = 3, col = 'black')
lines(x = p_list, y = Error_av[,2], col = 'orange')
lines(x = p_list, y = Error_av[,1], lty = 3, col = 'orange')
lines(x = p_list, y = Error_av[,3], lty = 3, col = 'orange')
lines(x = p_list, y = Error_Var[,2], col = 'blue')
lines(x = p_list, y = Error_Var[,1], lty = 3, col = 'blue')
lines(x = p_list, y = Error_Var[,3], lty = 3, col = 'blue')
lines(x = p_list, y = Error_missSBM[,2], col = 'red')
lines(x = p_list, y = Error_missSBM[,1], lty = 3, col = 'red')
lines(x = p_list, y = Error_missSBM[,3], lty = 3, col = 'red')
rm(list=objects())
setwd("~/Desktop/Experiments/Simulations/Results")
type <- 2
path <- "Missing Observations"
K <- 3
M <- 100 # number of experiments############a
N <- 500
p_list <- rep(0,14)
# record the errors
Error_missSBM <- matrix(NA, ncol = 3, nrow = 14)
Error_Var <- matrix(NA, ncol = 3, nrow = 14)
Error_true_Z <- matrix(NA, ncol = 3, nrow = 14)
Error_softImpute <- matrix(NA, ncol = 3, nrow = 14)
Error_av <- matrix(NA, ncol = 3, nrow = 14)
for (n in 1:14){
res <- readRDS(paste0(path, "/r_", n,"_av.RDS"))
p_list[n] <- res$p
Error_missSBM[n,] <- quantile(res$Error_missSBM, probs = c(0.25, 0.5, 0.75))
Error_Var[n,] <- quantile(res$Error_Var, probs = c(0.25, 0.5, 0.75))
Error_softImpute[n,] <- quantile(res$Error_softImpute, probs = c(0.25, 0.5, 0.75))
Error_true_Z[n,] <- quantile(res$Error_true_Z, probs = c(0.25, 0.5, 0.75))
Error_av[n,] <- quantile(res$Error_av, probs = c(0.25, 0.5, 0.75))
}
#Error_softImpute <- log(Error_softImpute)
#Error_true_Z <- log(Error_true_Z)
#Error_Var <- log(Error_Var)
#Error_missSBM <- log(Error_missSBM)
plot(x = p_list, y = Error_softImpute[,2], type = 'l', col = 'green',
xlab = "", ylab = "", log = "x", ylim = c(0, 0.05))
lines(x = p_list, y = Error_softImpute[,1], lty = 3, col = 'green')
lines(x = p_list, y = Error_softImpute[,3], lty = 3, col = 'green')
lines(x = p_list, y = Error_true_Z[,2], col = 'black')
lines(x = p_list, y = Error_true_Z[,1], lty = 3, col = 'black')
lines(x = p_list, y = Error_true_Z[,3], lty = 3, col = 'black')
lines(x = p_list, y = Error_av[,2], col = 'orange')
lines(x = p_list, y = Error_av[,1], lty = 3, col = 'orange')
lines(x = p_list, y = Error_av[,3], lty = 3, col = 'orange')
lines(x = p_list, y = Error_Var[,2], col = 'blue')
lines(x = p_list, y = Error_Var[,1], lty = 3, col = 'blue')
lines(x = p_list, y = Error_Var[,3], lty = 3, col = 'blue')
lines(x = p_list, y = Error_missSBM[,2], col = 'red')
lines(x = p_list, y = Error_missSBM[,1], lty = 3, col = 'red')
lines(x = p_list, y = Error_missSBM[,3], lty = 3, col = 'red')
rm(list=objects())
setwd("~/Desktop/Experiments/Simulations/Results")
type <- 2
path <- "Missing Observations"
K <- 3
M <- 100 # number of experiments############a
N <- 500
p_list <- rep(0,14)
# record the errors
Error_missSBM <- matrix(NA, ncol = 3, nrow = 14)
Error_Var <- matrix(NA, ncol = 3, nrow = 14)
Error_true_Z <- matrix(NA, ncol = 3, nrow = 14)
Error_softImpute <- matrix(NA, ncol = 3, nrow = 14)
Error_av <- matrix(NA, ncol = 3, nrow = 14)
for (n in 1:14){
res <- readRDS(paste0(path, "/r_", n,"_av.RDS"))
p_list[n] <- res$p
Error_missSBM[n,] <- quantile(res$Error_missSBM, probs = c(0.25, 0.5, 0.75))
Error_Var[n,] <- quantile(res$Error_Var, probs = c(0.25, 0.5, 0.75))
Error_softImpute[n,] <- quantile(res$Error_softImpute, probs = c(0.25, 0.5, 0.75))
Error_true_Z[n,] <- quantile(res$Error_true_Z, probs = c(0.25, 0.5, 0.75))
Error_av[n,] <- quantile(res$Error_av, probs = c(0.25, 0.5, 0.75))
}
#Error_softImpute <- log(Error_softImpute)
#Error_true_Z <- log(Error_true_Z)
#Error_Var <- log(Error_Var)
#Error_missSBM <- log(Error_missSBM)
plot(x = p_list, y = Error_softImpute[,2], type = 'l', col = 'green',
xlab = "", ylab = "", log = "x", ylim = c(0, 0.021))
lines(x = p_list, y = Error_softImpute[,1], lty = 3, col = 'green')
lines(x = p_list, y = Error_softImpute[,3], lty = 3, col = 'green')
lines(x = p_list, y = Error_true_Z[,2], col = 'black')
lines(x = p_list, y = Error_true_Z[,1], lty = 3, col = 'black')
lines(x = p_list, y = Error_true_Z[,3], lty = 3, col = 'black')
lines(x = p_list, y = Error_av[,2], col = 'orange')
lines(x = p_list, y = Error_av[,1], lty = 3, col = 'orange')
lines(x = p_list, y = Error_av[,3], lty = 3, col = 'orange')
lines(x = p_list, y = Error_Var[,2], col = 'blue')
lines(x = p_list, y = Error_Var[,1], lty = 3, col = 'blue')
lines(x = p_list, y = Error_Var[,3], lty = 3, col = 'blue')
lines(x = p_list, y = Error_missSBM[,2], col = 'red')
lines(x = p_list, y = Error_missSBM[,1], lty = 3, col = 'red')
lines(x = p_list, y = Error_missSBM[,3], lty = 3, col = 'red')
rm(list=objects())
setwd("~/Desktop/Experiments/Simulations/Results")
type <- 2
path <- "Missing Observations"
K <- 3
M <- 100 # number of experiments############a
N <- 500
p_list <- rep(0,14)
# record the errors
Error_missSBM <- matrix(NA, ncol = 3, nrow = 14)
Error_Var <- matrix(NA, ncol = 3, nrow = 14)
Error_true_Z <- matrix(NA, ncol = 3, nrow = 14)
Error_softImpute <- matrix(NA, ncol = 3, nrow = 14)
Error_av <- matrix(NA, ncol = 3, nrow = 14)
for (n in 1:14){
res <- readRDS(paste0(path, "/r_", n,"_av.RDS"))
p_list[n] <- res$p
Error_missSBM[n,] <- quantile(res$Error_missSBM, probs = c(0.25, 0.5, 0.75))
Error_Var[n,] <- quantile(res$Error_Var, probs = c(0.25, 0.5, 0.75))
Error_softImpute[n,] <- quantile(res$Error_softImpute, probs = c(0.25, 0.5, 0.75))
Error_true_Z[n,] <- quantile(res$Error_true_Z, probs = c(0.25, 0.5, 0.75))
Error_av[n,] <- quantile(res$Error_av, probs = c(0.25, 0.5, 0.75))
}
#Error_softImpute <- log(Error_softImpute)
#Error_true_Z <- log(Error_true_Z)
#Error_Var <- log(Error_Var)
#Error_missSBM <- log(Error_missSBM)
plot(x = p_list, y = Error_softImpute[,2], type = 'l', col = 'green',
xlab = "", ylab = "", log = "x", ylim = c(0.19, 0.021))
lines(x = p_list, y = Error_softImpute[,1], lty = 3, col = 'green')
lines(x = p_list, y = Error_softImpute[,3], lty = 3, col = 'green')
lines(x = p_list, y = Error_true_Z[,2], col = 'black')
lines(x = p_list, y = Error_true_Z[,1], lty = 3, col = 'black')
lines(x = p_list, y = Error_true_Z[,3], lty = 3, col = 'black')
lines(x = p_list, y = Error_av[,2], col = 'orange')
lines(x = p_list, y = Error_av[,1], lty = 3, col = 'orange')
lines(x = p_list, y = Error_av[,3], lty = 3, col = 'orange')
lines(x = p_list, y = Error_Var[,2], col = 'blue')
lines(x = p_list, y = Error_Var[,1], lty = 3, col = 'blue')
lines(x = p_list, y = Error_Var[,3], lty = 3, col = 'blue')
lines(x = p_list, y = Error_missSBM[,2], col = 'red')
lines(x = p_list, y = Error_missSBM[,1], lty = 3, col = 'red')
lines(x = p_list, y = Error_missSBM[,3], lty = 3, col = 'red')
rm(list=objects())
setwd("~/Desktop/Experiments/Simulations/Results")
type <- 2
path <- "Missing Observations"
K <- 3
M <- 100 # number of experiments############a
N <- 500
p_list <- rep(0,14)
# record the errors
Error_missSBM <- matrix(NA, ncol = 3, nrow = 14)
Error_Var <- matrix(NA, ncol = 3, nrow = 14)
Error_true_Z <- matrix(NA, ncol = 3, nrow = 14)
Error_softImpute <- matrix(NA, ncol = 3, nrow = 14)
Error_av <- matrix(NA, ncol = 3, nrow = 14)
for (n in 1:14){
res <- readRDS(paste0(path, "/r_", n,"_av.RDS"))
p_list[n] <- res$p
Error_missSBM[n,] <- quantile(res$Error_missSBM, probs = c(0.25, 0.5, 0.75))
Error_Var[n,] <- quantile(res$Error_Var, probs = c(0.25, 0.5, 0.75))
Error_softImpute[n,] <- quantile(res$Error_softImpute, probs = c(0.25, 0.5, 0.75))
Error_true_Z[n,] <- quantile(res$Error_true_Z, probs = c(0.25, 0.5, 0.75))
Error_av[n,] <- quantile(res$Error_av, probs = c(0.25, 0.5, 0.75))
}
#Error_softImpute <- log(Error_softImpute)
#Error_true_Z <- log(Error_true_Z)
#Error_Var <- log(Error_Var)
#Error_missSBM <- log(Error_missSBM)
plot(x = p_list, y = Error_softImpute[,2], type = 'l', col = 'green',
xlab = "", ylab = "", log = "x", ylim = c(0.019, 0.021))
lines(x = p_list, y = Error_softImpute[,1], lty = 3, col = 'green')
lines(x = p_list, y = Error_softImpute[,3], lty = 3, col = 'green')
lines(x = p_list, y = Error_true_Z[,2], col = 'black')
lines(x = p_list, y = Error_true_Z[,1], lty = 3, col = 'black')
lines(x = p_list, y = Error_true_Z[,3], lty = 3, col = 'black')
lines(x = p_list, y = Error_av[,2], col = 'orange')
lines(x = p_list, y = Error_av[,1], lty = 3, col = 'orange')
lines(x = p_list, y = Error_av[,3], lty = 3, col = 'orange')
lines(x = p_list, y = Error_Var[,2], col = 'blue')
lines(x = p_list, y = Error_Var[,1], lty = 3, col = 'blue')
lines(x = p_list, y = Error_Var[,3], lty = 3, col = 'blue')
lines(x = p_list, y = Error_missSBM[,2], col = 'red')
lines(x = p_list, y = Error_missSBM[,1], lty = 3, col = 'red')
lines(x = p_list, y = Error_missSBM[,3], lty = 3, col = 'red')
plot(x = p_list, y = Error_softImpute[,2], type = 'l', col = 'green',
xlab = "", ylab = "", log = "x", ylim = c(0.019, 0.021))
lines(x = p_list, y = Error_softImpute[,1], lty = 3, col = 'green')
lines(x = p_list, y = Error_softImpute[,3], lty = 3, col = 'green')
lines(x = p_list, y = Error_true_Z[,2], col = 'black')
lines(x = p_list, y = Error_true_Z[,1], lty = 3, col = 'black')
lines(x = p_list, y = Error_true_Z[,3], lty = 3, col = 'black')
lines(x = p_list, y = Error_av[,2], col = 'orange')
lines(x = p_list, y = Error_av[,1], lty = 3, col = 'orange')
lines(x = p_list, y = Error_av[,3], lty = 3, col = 'orange')
lines(x = p_list, y = Error_Var[,2], col = 'blue')
lines(x = p_list, y = Error_Var[,1], lty = 3, col = 'blue')
lines(x = p_list, y = Error_Var[,3], lty = 3, col = 'blue')
lines(x = p_list, y = Error_missSBM[,2], col = 'red')
lines(x = p_list, y = Error_missSBM[,1], lty = 3, col = 'red')
lines(x = p_list, y = Error_missSBM[,3], lty = 3, col = 'red')
rm(list=objects())
setwd("~/Desktop/Experiments/Simulations/Results")
type <- 2
path <- "Missing Observations"
K <- 3
M <- 100 # number of experiments############a
N <- 500
p_list <- rep(0,14)
# record the errors
Error_missSBM <- matrix(NA, ncol = 3, nrow = 14)
Error_Var <- matrix(NA, ncol = 3, nrow = 14)
Error_true_Z <- matrix(NA, ncol = 3, nrow = 14)
Error_softImpute <- matrix(NA, ncol = 3, nrow = 14)
Error_av <- matrix(NA, ncol = 3, nrow = 14)
for (n in 1:14){
res <- readRDS(paste0(path, "/r_", n,"_av.RDS"))
p_list[n] <- res$p
Error_missSBM[n,] <- quantile(res$Error_missSBM, probs = c(0.25, 0.5, 0.75))
Error_Var[n,] <- quantile(res$Error_Var, probs = c(0.25, 0.5, 0.75))
Error_softImpute[n,] <- quantile(res$Error_softImpute, probs = c(0.25, 0.5, 0.75))
Error_true_Z[n,] <- quantile(res$Error_true_Z, probs = c(0.25, 0.5, 0.75))
Error_av[n,] <- quantile(res$Error_av, probs = c(0.25, 0.5, 0.75))
}
plot(x = p_list, y = Error_softImpute[,2], type = 'l', col = 'green',
xlab = "", ylab = "", log = "x", ylim = c(0.019, 0.021), xlim = c(0.05, 1))
lines(x = p_list, y = Error_softImpute[,1], lty = 3, col = 'green')
lines(x = p_list, y = Error_softImpute[,3], lty = 3, col = 'green')
lines(x = p_list, y = Error_true_Z[,2], col = 'black')
lines(x = p_list, y = Error_true_Z[,1], lty = 3, col = 'black')
lines(x = p_list, y = Error_true_Z[,3], lty = 3, col = 'black')
lines(x = p_list, y = Error_av[,2], col = 'orange')
lines(x = p_list, y = Error_av[,1], lty = 3, col = 'orange')
lines(x = p_list, y = Error_av[,3], lty = 3, col = 'orange')
lines(x = p_list, y = Error_Var[,2], col = 'blue')
lines(x = p_list, y = Error_Var[,1], lty = 3, col = 'blue')
lines(x = p_list, y = Error_Var[,3], lty = 3, col = 'blue')
lines(x = p_list, y = Error_missSBM[,2], col = 'red')
lines(x = p_list, y = Error_missSBM[,1], lty = 3, col = 'red')
lines(x = p_list, y = Error_missSBM[,3], lty = 3, col = 'red')
res
rm(list=objects())
setwd("~/Desktop/Experiments/Simulations/Results")
library(softImpute)
library(missSBM)
##################### -  Set parameters - #########
K <- 3
M <- 100 # number of experiments############
N <- 500
p_list <- exp(seq(log(1), log(0.025), length.out = 15))
p <- p_list[14]
# set Q the probabilities of connections between communities
Q <- matrix(c(0.5,   0.2,  0.2,
0.2,   0.5,  0.2,
0.2,  0.2,  0.5), nrow = 3)
alpha <- rep(1/K, K)
##################### -  Draw random variables - #####################
# set Z the label function
Z <- base::sample(1:K, size = N, replace = T, prob = alpha)
# set A the full adjacency matrix
Theta <- sapply(1:N, function(i) sapply(1:N, function(j) Q[Z[i], Z[j]])) # SBM matrix
diag(Theta)  <- 0
A_undir <- rbinom(n=N*(N-1)/2, size=1, prob=Theta[upper.tri(Theta)]) # draw edges
A <- matrix(0,N,N)
A[upper.tri(A)] <- A_undir
A <- (A+t(A)) # adjacency matrix
# Sample edges
Omega_undir <- rbinom(n=N*(N-1)/2, size=1, prob=p) # draw edges
Omega <- matrix(0,N,N)
Omega[upper.tri(Omega)] <- Omega_undir
Omega <- (Omega+t(Omega)) # adjacency matrix
# set A_obs the observed adjacency matrix
A_obs <- A
diag(A_obs) <- NA
A_obs[Omega == 0] <- NA
sum(is.na(A_obs))
sum(!is.na(A_obs))
